<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">&lt;?php
// https://stackexchange.com/oauth/dialog?client_id=9796&amp;scope=write_access&amp;redirect_uri=https://stackexchange.com/oauth/login_success
$key = 'FIXME';
$access_token = 'FIXME';
$apiUrl = 'https://api.stackexchange.com/2.2/';
$site = 'stackoverflow';

require_once 'HTTP/Request2.php';

//search
// https://api.stackexchange.com/docs/search
$req = new HTTP_Request2(
    $apiUrl . 'search?' . http_build_query(
        [
            'key'          =&gt; $key,
            'access_token' =&gt; $access_token,
            'order'        =&gt; 'desc',
            'sort'         =&gt; 'activity',
            // https://api.stackexchange.com/docs/filters
            // filter must be "unsafe"!
            //'filter'       =&gt; 'withbody',
            'filter'       =&gt; ')peeUKlrI1gEM_K5k96Qk8IC',
            'site'         =&gt; $site,
            'intitle'      =&gt; 'javasript',//fix 1
            'intitle'      =&gt; 'javascipt',//fix 2
        ]
    )
);
$res = $req-&gt;send();

$data = json_decode($res-&gt;getBody());

foreach ($data-&gt;items as $question) {
    echo $question-&gt;question_id . "\n";
    echo ' ' . $question-&gt;link . "\n";

    if (file_exists(__DIR__ . '/fixed/' . $question-&gt;question_id)) {
        echo " already fixed\n";
        continue;
    }

    echo ' title: ' . $question-&gt;title . "\n";
    $fixed = str_replace(
        // fix 1: JavaSript
        //['javasript', 'Javasript', 'JavaSript', 'javaSript'],
        // fix 2: JavaScipt
        ['javascipt', 'Javascipt', 'JavaScipt', 'JavaScipt'],
        ['javascript', 'JavaScript', 'JavaScript', 'JavaScript'],
        $question-&gt;title
    );
    echo ' fixed: ' . $fixed . "\n";

    if ($fixed == $question-&gt;title) {
        echo " !! title did not change, skipping\n";
        continue;
    }
    //var_dump($question);die();

    // https://api.stackexchange.com/docs/edit-question
    // filter can be created there
    $wreq = new HTTP_Request2(
        $apiUrl . 'questions/' . $question-&gt;question_id . '/edit',
        'POST'
    );
    $wreq-&gt;addPostParameter('key', $key);
    $wreq-&gt;addPostParameter('access_token', $access_token);
    $wreq-&gt;addPostParameter('site', $site);
    $wreq-&gt;addPostParameter('title', $fixed);
    $wreq-&gt;addPostParameter('body', $question-&gt;body_markdown);
    $wreq-&gt;addPostParameter('tags', implode(',', $question-&gt;tags));
    $res = $wreq-&gt;send();
    if ($res-&gt;getStatus() == 200) {
        //mark fixed
        echo " fixed!\n";
        file_put_contents(
            __DIR__ . '/fixed/' . $question-&gt;question_id, ''
        );
        //echo $res-&gt;getBody() . "\n";//die();
        sleep(4);
        //exit(0);
    } else {
        echo "ERROR\n";
        echo $res-&gt;getBody() . "\n";
        exit(1);
    }
}
?&gt;
</pre></body></html>