在第一个 "." 之前获取一个字符串用 php

Posted

技术标签:

【中文标题】在第一个 "." 之前获取一个字符串用 php【英文标题】:get a string before the first "." with php 【发布时间】:2011-07-31 22:52:18 【问题描述】:

“Lorem Ipsum 只是印刷和排版行业的虚拟文本。”

来自

“Lorem Ipsum 只是印刷和排版行业的虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是该行业的标准虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作类型样本书。它不仅经历了五个世纪,而且还经历了电子排版的飞跃,基本保持不变。它在 1960 年代随着包含 Lorem Ipsum 段落的 Letraset 表的发布而流行起来,最近随着桌面排版软件如 Aldus PageMaker 的发布而普及,包括版本Lorem Ipsum。”

我们怎样才能做到这一点? php中是否有一个很好的函数来做这样的事情?

谢谢

亚当斋月

【问题讨论】:

我们在这里真的很基础 xD 对不起,但我需要知道人们对此的看法 :),请参阅 explode 和 strpos 这就是我喜欢 *** 的原因。 你试过php.net/string 吗?人们不会说出您在手册中找不到的任何内容 【参考方案1】:

对于 PHP 5.3 及更高版本,您可以将 before_needle 参数与 strstr 一起使用:

strstr( $youstringhere, ".", true );

【讨论】:

【参考方案2】:
// fastest way
echo substr($text, 0, strpos('.', $text));

【讨论】:

【参考方案3】:

您可以使用explode() 函数对其进行拆分。

$sentences = explode (".", $text);
// first sentence is in $sentences[0]

【讨论】:

【参考方案4】:

这样的事情呢(其他人建议使用explode——所以我建议另一种解决方案)

$str = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.";

if (preg_match('/^([^\.]*)/', $str, $matches)) 
    echo $matches[1] . '.';

正则表达式将:

从字符串的开头开始:^ 匹配任何不是 . :[^\.] 任意次数:[^\.]*

而且,由于您希望在输出末尾添加 . 并且 . 与正则表达式不匹配,因此您必须在使用正则表达式找到的内容时将其添加回来。

【讨论】:

不应该是$matches[0]吗? @Canuteson 第一个捕获的 (在模式中的括号之间) 段位于 $matches[1] 中——这里,括号围绕着整个模式,@987654329 @ 和 $matches[1] 将包含相同的内容 正则表达式,就像电锯一样,在某些情况下非常有用。这么简单的流程,有点过头了。 一个人必须学习基本的字符串才能自己解决这些问题。正则表达式对他没有好处。 没错,正则表达式在这里是多余的。但我认为扩大答案范围是一个很好的答案。所有其他人(substr()strstr()explode() 等)都已被提及(有些甚至多次)。【参考方案5】:

您可以使用explode() 来获取第一句话。 http://de.php.net/manual/en/function.explode.php

【讨论】:

以上是关于在第一个 "." 之前获取一个字符串用 php的主要内容,如果未能解决你的问题,请参考以下文章

GNU make“命令在第一个目标之前开始” [重复]

在第 n 次出现字符时剪切字符串

"';'在第一个“=>”(vsc)上是必需的“[关闭]

js弹框怎么获得父页面的元素

Linux shell获取之前的时间

jsp按钮怎么提交数据?