如何解决这个字符串替换php的问题


How to fix this string replace php problem?

我想替换以下文字(不包括:,;. Stc .)与链接。我该怎么做呢?

<?php
$string = "wordey; string, boom";
$string = preg_replace("/[^a-z]/i", "<a href='x'>/[^a-z]/i</a>", $string); //??
echo $string; // <a href='wordey'>wordey</a>; <a href='string'>string</a>, <a href='boom'>boom</a>
?>

请注意;, . 等等都很重要。

您的正则表达式或替换字符串都没有意义。正则表达式匹配范围[a-z](由前导^表示)中以外的所有内容,并且您的替换字符串似乎包含正则表达式语法,这是不应该的。

如果你想替换单词,你的正则表达式应该看起来像/[a-z]+/i,它对一个或多个字母进行不区分大小写的贪婪匹配。

要在替换中使用匹配的字符串,可以使用'N,其中N是表示要引用的子匹配的数字。要添加子匹配,请在要引用的正则表达式部分周围加上括号。正则表达式变为/([a-z]+)/i

将它们放在一起,您将得到以下结果,这似乎给出了您正在寻找的输出:

$string = preg_replace("/([a-z]+)/i", "<a href='''1'>''1</a>", $string);

注意双反斜杠是一个转义序列,在字符串中插入一个文字反斜杠。

$string = preg_replace('/('w+)/', '<a href="''1">''1</a>', $string);

试试这个

http://sandbox.phpcode.eu/g/1eaa6.php

<?php 
$string = "wordey; string, boom"; 
$string = preg_replace("/(.*?)([^a-z]+)/i",  
"<a href='x'>$1</a>$2", $string);  
$string = preg_replace("/, (.*)/", ", <a href='x'>$1</a>", $string); 
echo $string; // <a href='wordey'>wordey</a>; <a href='string'>string</a>, <a href='boom'>boom</a> 
?>

试试这个:

$result = preg_replace('/([^;,''s]+)/', '<a href="$1">$1</a>', $subject);