Как нарезать строку в PHP? - PullRequest
4 голосов
/ 08 октября 2011

Хорошо, у меня есть эта строка:

"MICROSOFT CORP CIK#: 0000789019 (see all company filings)"

И я бы хотел все обрезать после бита "CORP". Как бы я сделал это в PHP? Я привык к Python, поэтому я не уверен, как это сделать.

Для ясности, это вывод, который я хочу:

"MICROSOFT CORP"

Я пытаюсь:

$companyname = substr($companyname, 0, strpos($companyname, " CIK"));

и я ничего не вижу.

Вот мой полный код:

<?php
include 'simple_html_dom.php';
$html = file_get_html('http://www.sec.gov/cgi-bin/browse-edgar?company=&match=&CIK=MSFT&filenum=&State=&Country=&SIC=&owner=exclude&Find=Find+Companies&action=getcompany');
$companyname = $html->find('span[class=companyName]', 0);
$companyname = substr($companyname, 0, strpos($companyname, " CIK#")+5);
$bizadd = $html->find('div[class="mailer"]');
echo $companyname;
echo "<br />";
foreach ($bizadd as $value) {
    $addvals = $value->find('span[class="mailerAddress"]');
    echo "<br />";
    foreach ($addvals as $value) {
        echo $value;
        echo "<br />";
    }
}
?>

Ответы [ 4 ]

17 голосов
/ 08 октября 2011

Вы можете использовать explode() (http://php.net/explode) или смесь substr() (http://php.net/substr) с strpos() (http://php.net/strpos).

<?php
$string = "MICROSOFT CORP CIK#: 0000789019 (see all company filings)";
$newString = substr($string, 0, strpos($string, " CIK#"));
echo $newString;

* 1012)* Edit: отредактировано несколько раз, чтобы соответствовать вашему вопросу редактирования ...

3 голосов
/ 08 октября 2011

Вы найдете положение "CORP" с помощью strpos (обязательно прочитайте гигантское красное предупреждение), а затем отрежьте соответствующую часть с помощью substr .

0 голосов
/ 31 декабря 2018

Я пришел на эту страницу в поисках метода среза slice($start, $end), но нашел только решения для конкретного случая.

В моем случае у меня есть только индексы (начало и конец). Потребность в length для нарезки струны казалась глупой. Поэтому я написал функцию среза. Он имитирует метод JavaScript slice .

// str_slice(string $str, int $start [, int $end])
function str_slice() {
    $args = func_get_args();
    switch (count($args)) {
        case 1:
            return $args[0];
        case 2:
            $str        = $args[0];
            $str_length = strlen($str);
            $start      = $args[1];
            if ($start < 0) {
                if ($start >= - $str_length) {
                    $start = $str_length - abs($start);
                } else {
                    $start = 0;
                }
            }
            else if ($start >= $str_length) {
                $start = $str_length;
            }
            $length = $str_length - $start;
            return substr($str, $start, $length);
        case 3:
            $str        = $args[0];
            $str_length = strlen($str);
            $start      = $args[1];
            $end        = $args[2];
            if ($start >= $str_length) {
                return "";
            }
            if ($start < 0) {
                if ($start < - $str_length) {
                    $start = 0;
                } else {
                    $start = $str_length - abs($start);
                }
            }
            if ($end <= $start) {
                return "";
            }
            if ($end > $str_length) {
                $end = $str_length;
            }
            $length = $end - $start;
            return substr($str, $start, $length);
    }
    return null;
}


var_dump( str_slice("abcdefghijklmnopqrstuvwxyz")          ); // "abcdefghijklmnopqrstuvwxyz"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", 5)       ); // "fghijklmnopqrstuvwxyz"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", -5)      ); // "vwxyz"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", 40)      ); // ""
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", -40)     ); // "abcdefghijklmnopqrstuvwxyz"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", 5, 10)   ); // "fghij"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", 5, 20)   ); // "fghijklmnopqrst"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", 5, 30)   ); // "fghijklmnopqrstuvwxyz"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", -20, 2)  ); // ""
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", -20, 10) ); // "ghij"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", -20, 15) ); // "ghijklmno"
var_dump( str_slice("abcdefghijklmnopqrstuvwxyz", -20, 40) ); // "ghijklmnopqrstuvwxyz"
0 голосов
/ 08 октября 2011

Если ваша строка хранится в $ a, то любая из

echo substr($a, 0, strpos($a, " CIK"));

или

preg_match("/(.*) CIK/", $a, $matches);
echo $matches[1];

или

echo preg_replace("/(.*) CIK.*/", "$1", $a);

сделает.

...