PHP正则表达式拆分文本以插入HTML

PHP正则表达式拆分文本以插入HTML,php,regex,Php,Regex,对正则表达式来说非常(!)新,但是 我从$title变量输出了以下文本字符串: A. This is a title B. This is another title 等等 我的目标是: <span>A.</span> This is a title <span>B.</span> This is another title 等等 我知道我需要添加一个额外的正则表达式来获取文本字符串的其余部分 也许一位正则表达式大师可以帮助初学者走出困境 谢谢

对正则表达式来说非常(!)新,但是

我从$title变量输出了以下文本字符串:

A. This is a title
B. This is another title
等等

我的目标是:

<span>A.</span> This is a title
<span>B.</span> This is another title
等等

我知道我需要添加一个额外的正则表达式来获取文本字符串的其余部分

也许一位正则表达式大师可以帮助初学者走出困境

谢谢

史蒂夫

试试看

$title = 'A. This is a title';
$title = preg_replace('/^[A-Z]\./', '<span>$0</span>', $title);
echo $title;
// <span>A.</span> This is a title
$title='A.这是一个标题';
$title=preg_replace(“/^[A-Z]\./”、“$0”、$title);
echo$标题;
//这是一个标题
如果字符串后面包含换行符和其他标题,请在结束分隔符后添加
m
修饰符

如果正则表达式不匹配,则不会进行替换,因此不需要使用
If
语句。

试试看

$title = 'A. This is a title';
$title = preg_replace('/^[A-Z]\./', '<span>$0</span>', $title);
echo $title;
// <span>A.</span> This is a title
$title='A.这是一个标题';
$title=preg_replace(“/^[A-Z]\./”、“$0”、$title);
echo$标题;
//这是一个标题
如果字符串后面包含换行符和其他标题,请在结束分隔符后添加
m
修饰符

如果正则表达式不匹配,则不会进行替换,因此不需要使用
If
语句。

是否总是只有2个字符(“A.”、“B.”、“C.”、…) 因为这样你就可以使用一个子字符串而不是正则表达式。 只需选择链接的前两个字符,并将跨度环绕子字符串

是否总是只有两个字符(“A.”、“B.”、“C.”,…) 因为这样你就可以使用一个子字符串而不是正则表达式。 只需选择链接的前两个字符,并将跨距环绕在子字符串周围即可尝试以下操作(未测试):

这将简单地用
、该字符(用括号括起来)和
替换A-Z后跟字符串开头的句点(用
^
字符表示)

同样,这没有经过测试,但应该给您一个启动:)

试试这个(未经测试):

这将简单地用
、该字符(用括号括起来)和
替换A-Z后跟字符串开头的句点(用
^
字符表示)


同样,这没有经过测试,但应该给你一个起点:)

虽然不那么健壮,但这是一个完全有效的想法-不过最好在你的答案中提供一个演示,不是每个人都是专业人士;)使用了上面的正则表达式解决方案,但感谢您这么快回来:-)我真的没有时间做一个例子,但我很高兴您找到了一种方法来做任何必须做的事情;)虽然不那么健壮,但这是一个完全有效的想法——不过最好在答案中提供一个演示,不是每个人都是专业人士;)使用了上面的正则表达式解决方案,但感谢您这么快回来:-)我真的没有时间做一个例子,但我很高兴您找到了一种方法来做任何必须做的事情;)谢谢Leonard,用了第一个答案,但谢谢你这么快就回来了:-)谢谢Leonard,用了第一个答案,但谢谢你这么快就回来了:-)效果很好。非常感谢。咒语般的咒语。非常感谢。s
$title = 'A. This is a title';
$title = preg_replace('/^[A-Z]\./', '<span>$0</span>', $title);
echo $title;
// <span>A.</span> This is a title
$title = $element['#title'];

if (preg_match("/([A-Z]\.)(.*)/", $title, $matches)) {
  return '<li' . drupal_attributes($element['#attributes']) . "><span>{$matches[0]</span>{$matches[1]}</li>\n";
} else {
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
$title = preg_replace('/^([A-Z]\.)/', "<span>$1</span>", $title);