【问题标题】:Seperate String into Two Parts with condition PHP [closed]使用条件PHP将字符串分成两部分[关闭]
【发布时间】:2018-02-08 14:26:31
【问题描述】:

我有类似这样的字符串

$title1 = 'Bleeding Steel Full Movie HD 720P Free';

在此字符串中,Full 之前的任何内容都是电影标题,我正在尝试将此字符串分为“Bleeding Steel”和“Full Movie HD 720P Free”两部分,我该如何实现这一点,提前致谢

【问题讨论】:

  • 字符串的任何部分是否固定,因为它永远不会改变?
  • 请提供您尝试过的内容。
  • 除非你在字符串中有一个常量部分,否则你不能将它们分开,
  • 全金属外壳?
  • @jeroen Ouhhh.. 这很重 ;-)

标签: php loops foreach


【解决方案1】:

您可以为此使用正则表达式:

<?php
$value = 'Bleeding Steel Full Movie HD 720P Free';

preg_match('/\sFull\sMovie/', $value, $match, PREG_OFFSET_CAPTURE);

$offset = !empty($match) ? $match[0][1] : strlen($value);

$value = [
    'title' => substr($value, 0, $offset), 
    'junk' => substr($value, $offset)
];

print_r($value);

https://3v4l.org/ICt9c

结果:

Array
(
    [title] => Bleeding Steel
    [junk] =>  Full Movie HD 720P Free
)

【讨论】:

  • 只要没有创建名为Full Movie Full Movie HD 720P Free 的电影,它应该可以正常工作。 3v4l.org/Dm1bo
  • 谢谢我需要的东西 :)
【解决方案2】:

有多个答案,比如 1 个选项是:

trim(substr($title1,0,15));

trim(substr($title1,15));

它保护字符串的固定和可变部分。

编辑:

与 preg_match:

<?php
$title1 = 'Bleeding Steel Full Movie HD 720P Free';

preg_match('/(.*)Full Movie/',$title1,$output);

echo $output[1];

【讨论】:

    【解决方案3】:

    爆炸速度更快

    我更喜欢用正则表达式分解的简单情况。根据文档,它更快,使用更简单:

    如果你不需要正则表达式的威力,你可以选择 更快(尽管更简单)的替代方法,例如 explode() 或 str_split()。

    http://php.net/manual/en/function.preg-split.php

    $title = 'Bleeding Steel Full Movie HD 720P Free';
    $delimiter = "Full Movie";
    $parts = explode("Full Movie", $title);
    
    # Output: Bleeding Steel - Full Movie HD 720P Free
    printf("%s - %s %s", trim($parts[0]), $delimiter, trim($parts[1]));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2015-05-30
      相关资源
      最近更新 更多