使用正则表达式过滤名称和姓氏

时间:2012-06-13 11:27:44

标签: php regex

在我的PHP脚本中,我有一个如下变量:

$names = '<a href="%URL$%" rel="tag">Name Surname</a>, <a href="%URL$%" rel="tag">Name Surname</a>, <a href="%URL$%" rel="tag">Name Surname</a>';

是否可以过滤$ name以获得此结果?

$names = '<a href="%URL$%" rel="tag">N. Surname</a>, <a href="%URL$%" rel="tag">N. Surname</a>, <a href="%URL$%" rel="tag">N. Surname</a>';

2 个答案:

答案 0 :(得分:0)

您可以使用preg_replace_callback

$names = preg_replace_callback(
             '/(<a[^>]*>)(\w+)( \w+</a>)',
             function($matches) {
                 return $matches[1] . substr($matches[2], 0, 1) . "." . $matches[3];
             },
             $names
         );

答案 1 :(得分:-1)

答案真的很简短:使用HTML解析器(如http://simplehtmldom.sourceforge.net/

正则表达式和HTML仅在您确定只拆分可预测的代码串时才有效。