Php 使用正则表达式替换字符串

Php 使用正则表达式替换字符串,php,regex,Php,Regex,我经常遇到正则表达式,但我并没有真正尝试去理解和使用它们。但是我当前的项目迫使我使用正则表达式,所以我需要有人能给我正确的正则表达式来替换一个简单的字符串。基本上,我是在替换从数据库检索到的一小部分longtext。长文本只是一个段落,带有以下形式的文本锚: <a href="example.com" title="blah3x">Example</a> 所以问题是如何替换title属性的值?请注意,文本可能包含两个以上的锚标签,所以我想能够专门针对每一个 编辑:

我经常遇到正则表达式,但我并没有真正尝试去理解和使用它们。但是我当前的项目迫使我使用正则表达式,所以我需要有人能给我正确的正则表达式来替换一个简单的字符串。基本上,我是在替换从数据库检索到的一小部分longtext。长文本只是一个段落,带有以下形式的文本锚:

<a href="example.com" title="blah3x">Example</a> 

所以问题是如何替换title属性的值?请注意,文本可能包含两个以上的锚标签,所以我想能够专门针对每一个

编辑: 我想在这个问题上使用纯PHP。我想我知道如何使用js/jquery实现这一点;
$doc = new DOMDocument();
$doc->loadHTML('<a href="example.com" title="blah3x">Example</a>');
$anchors = $doc->getElementsByTagName('a');
foreach ($anchors as $anchor)
{
    $anchor->setAttribute('target', '__blank');
}
$html = $doc->saveHTML();

echo $html;
$doc->loadHTML(“”); $archors=$doc->getElementsByTagName('a'); foreach($anchors作为$anchor) { $anchor->setAttribute('target','uu_blank'); } $html=$doc->saveHTML(); echo$html;

$string=preg\u replace(
“@]*)>(.*)@iU”,
'$4',
$string);
请注意,表达式末尾的
i
使其不区分大小写,而
U
使其不区分大小写。

Description 您可以使用以下正则表达式执行此操作

(”;
echo preg_更换('/(
免责声明
由于通过html解析器解析文本不是理想的解决方案,我将跳过关于使用Regex解析html的常见soap框免责声明。

@Barmar:我没有构建该项目。我知道它的设计非常糟糕,这基本上就是我想使用Regex的原因。.参见John Conde的答案,您可以使用专门用于parsi的函数ng HTML而不是regexp。它与系统的设计无关。虽然在大多数情况下这肯定是首选方法,但我认为称之为
正确的方法是不对的。例如:如果我必须解析100亿页,我会选择使用
regex
,甚至更可能是
strpos
。请参见问题
我当前的项目迫使我使用正则表达式,所以我需要有人能给我正确的正则表达式来替换一个简单的字符串。
我认为这可能会起作用。但是,如果不进行迭代,我无法访问锚对象。为什么我不能使用
$anchors[0]->setAttribute()
$string=preg_replace(
'@<a (.*)title="(.*)"([^>]*)>(.*)</a>@iU',
'<a $1title="'.$replacement.'"$3>$4</a>',
$string);
<?php
$sourcestring="<a href="example.com" title="blah3x">Example</a>";
echo preg_replace('/(<a\b[^>]*?\btitle=([\'"]))(.*?)\2/im','\1NewValue\2',$sourcestring);
?>

$sourcestring after replacement:
<a href="example.com" title="NewValue">Example</a>