如何使用 PHP 从文本区域解析文本中的 \n 符号
Posted
技术标签:
【中文标题】如何使用 PHP 从文本区域解析文本中的 \\n 符号【英文标题】:How to parse \n symbols in text from text area with PHP如何使用 PHP 从文本区域解析文本中的 \n 符号 【发布时间】:2014-08-14 22:32:40 【问题描述】:我有一个文本区域,我需要在提交表单时解析文本。
例如,我需要从该文本区域获取第一个字符串,获取它并保留整个文本。我不想使用nl2br
函数,然后将模式与<br />
一起使用。我可以只解析\n
字符吗?如果可以的话怎么办?我无法在我的 php 代码中执行此操作,但我可以在正则表达式测试器中执行示例链接如下。
http://regex101.com/r/mK7hF2
这是我的代码不起作用:
preg_match('/(.+)\n\n/', $_POST['text'],$title);
$title = $title[0];
echo $title;
它什么也不返回。帮我改一下,谢谢。
编辑
【问题讨论】:
使用双引号。 RTFM 【参考方案1】:你不需要正则表达式,使用strtok:
$title = strtok( $_POST['text'], "\n" );
编辑
好的,然后尝试使用\R
匹配任何类型的行尾'/(.+)\R/'
【讨论】:
至少它可以工作 =),但我正在寻找正则表达式解决方案。如果我没有为我的问题找到另一个解决方案,我会将其标记为正确答案。 成功了!正如@hwnd 所说this matches Unicode newlines sequences
一定是这样。【参考方案2】:
这应该在php
中工作:
$re = '/(.+)\n\n/';
$str = "first string\n\nsecond string\n\nother strings bla bla bla";
if (preg_match($re, $str, $matches))
echo $matches[1];
else
echo "nope";
输出:
first string
在输入 $str
中使用双引号很重要,以便 \n
被解释为换行符。
Working Demo
【讨论】:
这绝对适用于这个例子,但不适用于$_POST['text']
(这是文本区域)。为什么?
你能显示var_dump($_POST['text']);
的输出吗?
string(46) "第一个字符串第二个字符串其他字符串"
这意味着你的输入字符串中没有\n
。试试这个正则表达式:$re = '/(\S+)/';
这种模式很有效。但是我不明白为什么没有\n
?我将文本区域屏幕截图添加到我的问题中,以便您查看必须有\n
。顺便说一句,如果我使用nl2br
文本格式看起来像在文本区域中,那么必须有\n
以将其替换为<br />
。【参考方案3】:
在这种情况下请改用\R
。默认情况下,这匹配 Unicode 换行符序列。
preg_match('/(.+)\R+/', $_POST['text'], $title);
echo $title[1];
参考:
PHP Regex: How to match \r and \n?【讨论】:
感谢您的回复,Danijel 是第一个提供此功能的人,这对我有用,谢谢您的帮助。 @flinth 不用担心,如果您再次遇到此问题,我会查看参考答案,它解释了\R
以上是关于如何使用 PHP 从文本区域解析文本中的 \n 符号的主要内容,如果未能解决你的问题,请参考以下文章