Heim > Backend-Entwicklung > PHP-Tutorial > Fünf Verwendungsmethoden der neuesten String-Interception-Funktion PHP str_replace im Jahr 2017 und ausführliche Erläuterung der Funktion

Fünf Verwendungsmethoden der neuesten String-Interception-Funktion PHP str_replace im Jahr 2017 und ausführliche Erläuterung der Funktion

小白
Freigeben: 2023-03-11 07:20:01
Original
2266 Leute haben es durchsucht

Fünf Verwendungsmethoden der neuesten String-Interception-Funktion PHP str_replace im Jahr 2017 und ausführliche Erläuterung der Funktion

1.php preg_match_all结合str_replace替换内容中所有img


方法大致是:先读取内容里的所以IMG标签,然后把每个IMG标签的SRC抽取出来,并且组合成自己的内容,最后进行替换。 
preg_match_all就是我想要的函数,它能够把正则表达式匹配到的内容建立一个三维数组,你可以对它们进行遍历查找替换,不太了解的请查查手册,这里不作具体介绍。函数代码:

function replace($str)
{
preg_match_all(”/<img(.*)(src=\”[^\"]+\”)[^>]+>/isU”, $str, $arr);
for($i=0,$j=count($arr[0]);$i<$j;$i++){
$str = str_replace($arr[0][$i],”<img alt=\”我的信息” “.$arr[2][$i].” />”,$str);
}
return $str;
}
Nach dem Login kopieren

2. PHP 截取字符串函数 strtr/str_replace

1. strtr 转换指定字符

* string strtr ( string $str , string $from , string $to )
* string strtr ( string $str , array $replace_pairs )
Nach dem Login kopieren

* 该函数返回 str 的一个副本,并将在 from 中指定的字符转换为 to 中相应的字符。

* 如果 from 与 to 长度不相等,那么多余的字符部分将被忽略。

3.关于str_replace_once怎么只替换内容不替换里面alt标签

public function str_replace_once($needle,$replace,$haystack) 
{
    $pos = strpos($haystack, $needle);
    if ($pos === false) 
    {
        return $haystack;
    }
 
    return substr_replace($haystack, $replace, $pos, strlen($needle));
}
Nach dem Login kopieren

4.为什么str_replace返回的数据错误

例:替换英文逗号,空格字符,或者中文逗号

$str = &#39;正确,联系我们 goodsjob,goodsjob&#39;;
$reg = array(&#39;,&#39;,&#39; &#39;,&#39;,&#39; );
$strs = &#39;username like %&#39;.str_replace($reg,&#39;%, or username like %&#39;,$str).&#39;%&#39;;
Nach dem Login kopieren

返回的数据是:username like %正确%,%, or username like %or%, or username like %username%, or username like %like%, or username like %%联系我们%, or username like %goodsjob%, or username like %goodsjob%,为什么呢?

正确的结果应该是:usernme like %正确%, or username like %联系我们%, or username like %goodsjob%

先把空格替换成其他字符 $str在替换的过程中,=》 %, or username like % ,这里面也存在满足你替换规则的字符串所以会影响到结果

       $str = &#39;正确,联系我们 goodsjob,goodsjob&#39;;     
       $str = str_replace(&#39; &#39;, &#39; &#39;, $str);     
       $reg = array(&#39;,&#39;,&#39;,&#39;," ");     
       $strs = &#39;username like %&#39;.str_replace($reg,&#39;%, or username like %&#39;,$str).&#39;%&#39;;
Nach dem Login kopieren

5.敏感词替换算法,效率比str_replace高4倍(附6仟个敏感词)

function strtr_array(&$str,&$replace_arr) {
$maxlen = 0;$minlen = 1024*128;
if (empty($replace_arr)) return $str;
foreach($replace_arr as $k => $v) {
$len = strlen($k);
if ($len < 1) continue;
if ($len > $maxlen) $maxlen = $len;
if ($len < $minlen) $minlen = $len;
}
$len = strlen($str);
$pos = 0;$result = &#39;&#39;;
while ($pos < $len) {
if ($pos + $maxlen > $len) $maxlen = $len - $pos;
$found = false;$key = &#39;&#39;;
for($i = 0;$i<$maxlen;++$i) $key .= $str[$i+$pos]; //原文:memcpy(key,str+$pos,$maxlen)
for($i = $maxlen;$i >= $minlen;--$i) {
$key1 = substr($key, 0, $i); //原文:key[$i] = &#39;\0&#39;
if (isset($replace_arr[$key1])) {
$result .= $replace_arr[$key1];
$pos += $i;
$found = true;
break;
}
}
if(!$found) $result .= $str[$pos++];
}
return $result;
}
Nach dem Login kopieren


Das obige ist der detaillierte Inhalt vonFünf Verwendungsmethoden der neuesten String-Interception-Funktion PHP str_replace im Jahr 2017 und ausführliche Erläuterung der Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage